<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/err.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/err.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX0VSUl9IXzA_"><span class="b">_LINUX_ERR_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX0VSUl9IXzA_"><span class="b">_LINUX_ERR_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">compiler</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> 
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">errno</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="Maybe">       7:</span> 
<a name="8" /><span class="Maybe">       8:</span> <span class="k">/*</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="k"> * Kernel pointers have redundant information, so we can use a</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="k"> * scheme where we can return either an error code or a dentry</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="k"> * pointer with the same return value.</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="k"> *</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="k"> * This should be a per-architecture thing, to allow different</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="k"> * error and pointer decisions.</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="k"> */</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_TUFYX0VSUk5PXzA_"><span class="b">MAX_ERRNO</span></a>    <span class="c">4095</span>
<a name="17" /><span class="Maybe">      17:</span> 
<a name="18" /><span class="Maybe">      18:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__ASSEMBLY__</span>
<a name="19" /><span class="Maybe">      19:</span> 
<a name="20" /><span class="Maybe">      20:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SVNfRVJSX1ZBTFVFXzA_"><span class="b">IS_ERR_VALUE</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="f">(</span><span class="b">x</span><span class="f">)</span> <span class="f">&gt;=</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">-</span><a href="cpu.c_macros_ref.html#_TUFYX0VSUk5PXzA_"><span class="b">MAX_ERRNO</span></a><span class="f">)</span>
<a name="21" /><span class="Maybe">      21:</span> 
<a name="22" /><span class="Maybe">      22:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">ERR_PTR</span><span class="f">(</span><span class="m">long</span> <span class="b">error</span><span class="f">)</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="f">{</span>
<a name="24" /><span class="Maybe">      24:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="f">)</span> <span class="b">error</span><span class="f">;</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="f">}</span>
<a name="26" /><span class="Maybe">      26:</span> 
<a name="27" /><span class="Maybe">      27:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">PTR_ERR</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">ptr</span><span class="f">)</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="f">{</span>
<a name="29" /><span class="Maybe">      29:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span> <span class="b">ptr</span><span class="f">;</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="f">}</span>
<a name="31" /><span class="Maybe">      31:</span> 
<a name="32" /><span class="Maybe">      32:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">IS_ERR</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">ptr</span><span class="f">)</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="f">{</span>
<a name="34" /><span class="Maybe">      34:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_SVNfRVJSX1ZBTFVFXzA_"><span class="b">IS_ERR_VALUE</span></a><span class="f">(</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="b">ptr</span><span class="f">)</span><span class="f">;</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="f">}</span>
<a name="36" /><span class="Maybe">      36:</span> 
<a name="37" /><span class="Maybe">      37:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">IS_ERR_OR_NULL</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">ptr</span><span class="f">)</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="f">{</span>
<a name="39" /><span class="Maybe">      39:</span>     <span class="m">return</span> <span class="f">!</span><span class="b">ptr</span> <span class="f">||</span> <a href="cpu.c_macros_ref.html#_SVNfRVJSX1ZBTFVFXzA_"><span class="b">IS_ERR_VALUE</span></a><span class="f">(</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="b">ptr</span><span class="f">)</span><span class="f">;</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="f">}</span>
<a name="41" /><span class="Maybe">      41:</span> 
<a name="42" /><span class="Maybe">      42:</span> <span class="k">/**</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> * ERR_CAST - Explicitly cast an error-valued pointer to another pointer type</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> * @ptr: The pointer to cast.</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> *</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> * Explicitly cast an error-valued pointer to another pointer type in such a</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> * way as to make it clear that&apos;s what&apos;s going on.</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> */</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">ERR_CAST</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">ptr</span><span class="f">)</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="f">{</span>
<a name="51" /><span class="Maybe">      51:</span>     <span class="k">/* cast away the const */</span>
<a name="52" /><span class="Maybe">      52:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="f">)</span> <span class="b">ptr</span><span class="f">;</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="f">}</span>
<a name="54" /><span class="Maybe">      54:</span> 
<a name="55" /><span class="Maybe">      55:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">PTR_ERR_OR_ZERO</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">ptr</span><span class="f">)</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="f">{</span>
<a name="57" /><span class="Maybe">      57:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">IS_ERR</span><span class="f">(</span><span class="b">ptr</span><span class="f">)</span><span class="f">)</span>
<a name="58" /><span class="Maybe">      58:</span>         <span class="m">return</span> <span class="b">PTR_ERR</span><span class="f">(</span><span class="b">ptr</span><span class="f">)</span><span class="f">;</span>
<a name="59" /><span class="Maybe">      59:</span>     <span class="m">else</span>
<a name="60" /><span class="Maybe">      60:</span>         <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="f">}</span>
<a name="62" /><span class="Maybe">      62:</span> 
<a name="63" /><span class="Maybe">      63:</span> <span class="k">/* Deprecated */</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFRSX1JFVF8w"><span class="b">PTR_RET</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span> <span class="b">PTR_ERR_OR_ZERO</span><span class="f">(</span><span class="b">p</span><span class="f">)</span>
<a name="65" /><span class="Maybe">      65:</span> 
<a name="66" /><span class="Maybe">      66:</span> <span class="f">#</span><span class="n">endif</span>
<a name="67" /><span class="Maybe">      67:</span> 
<a name="68" /><span class="True">      68:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_ERR_H */</span>
<a name="69" /><span class="True">      69:</span> </pre>
  </body>
</html>
